<?php
namespace app\modules\models\api;

use app\helpers\Logger as helperLogger;

/**
 *  api 接口请求基类
 */
class BaseApi{

    //返回值判断
    public static function infoData($data, $url){
        if(is_array($data)){
            $result = $data;
        }else{
            //接口异常将写入wf日志
            helperLogger::write("【".json_encode($data)."】【".$url."】",'apierror');
            $result = array();
        }
        return $result;
    }

    /**
     * 获取客户端IP地址
     * @param integer $type 返回类型 0 返回IP地址 1 返回IPV4地址数字
     * @return mixed
     */
    public static function get_client_ip($type = 0) {
        $type       =  $type ? 1 : 0;
        static $ip  =   NULL;
        if ($ip !== NULL) return $ip[$type];
        if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
            $arr    =   explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
            $pos    =   array_search('unknown',$arr);
            if(false !== $pos) unset($arr[$pos]);
            $ip     =   trim($arr[0]);
        }elseif (isset($_SERVER['HTTP_CLIENT_IP'])) {
            $ip     =   $_SERVER['HTTP_CLIENT_IP'];
        }elseif (isset($_SERVER['REMOTE_ADDR'])) {
            $ip     =   $_SERVER['REMOTE_ADDR'];
        }
        // IP地址合法验证
        $long = sprintf("%u",ip2long($ip));
        $ip   = $long ? array($ip, $long) : array('0.0.0.0', 0);
        return $ip[$type];
    }

    /**
     * 解析api返回数据，并记录日志
     * @param $resData ：请求返回数据
     * @param $url : 请求url
     * @param $requestParams 请求参数
     * @param $module 数据模块
     * @return array
     */
    public static function parseApiData($resData, $url,$requestParams = [],$module = 'api'){

        $result = is_array($resData) ? $resData : [];

        //接口异常将写入wf日志
        helperLogger::write(
              'api.url:['. $url .']'
            . 'api.params:[' . json_encode($requestParams) . ']'
            . 'api.result:[' . json_encode($result) . ']'
            ,$module);

        return $result;
    }

    //根据身份证号判断男女
    public static function getSexBirthday($card_no){
        $res['birthday'] = strlen($card_no) == 15 ? ('19' . substr($card_no, 6, 2).'-'.substr($card_no, 8, 2).'-'.substr($card_no, 10, 2)) : substr($card_no, 6, 4).'-'.substr($card_no, 10, 2).'-'.substr($card_no, 12, 2);
        $res['sex'] = substr($card_no, (strlen($card_no)==15 ? -2 : -1), 1) % 2 ? '0' : '1';

        return $res;
    }

}
